package com.gdawj.mdb;

import com.gdawj.javabeans.Cours;
import com.gdawj.javabeans.Etudiant;
import com.gdawj.javabeans.EtudiantCours;
import com.gdawj.modele.ListeModele;
import java.util.ArrayList;
import java.util.List;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;
import javax.swing.JTable;

public class AbsenceEtudiant implements MessageListener{

    private ListeModele modeleListeMDB;
    private JTable tableMDB;

    public AbsenceEtudiant(){

    }

    // construction et initialisation de la connexion
    public AbsenceEtudiant(ConnectionFactory connectionFactory,Queue queue){

         try{
         // creer la connexion
         Connection connection=connectionFactory.createConnection();
         // creer la session
         Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
         // creer le consommateur de message
         MessageConsumer consumer=session.createConsumer(queue);
         // ecouter les messages
         consumer.setMessageListener(this);
         // demarrer la connexion
         connection.start();
         } catch(Exception e){
            System.out.println("Erreur dans le code de la fenetre"+e.getMessage());
         }

    }


    public void onMessage(Message message){

        Object[][] donnees=new Object[1][5];
        // Vider le modele
	modeleListeMDB.viderModele();
        // afficher les etudiants et leur absence
        if(message instanceof ObjectMessage)
        {
            try{
                // reception d'un nouveau message
                ObjectMessage messageMDB=(ObjectMessage)message;
                List<EtudiantCours> listeEtudiantsCours=(ArrayList<EtudiantCours>)messageMDB.getObject();
                for(EtudiantCours ec : listeEtudiantsCours){
                    Etudiant e=ec.getEtudiant();
                    Cours c=ec.getCours();
                    donnees[0][0]=c.getLibelle();
                    donnees[0][1]=e.getNom();
                    donnees[0][2]=e.getPrenom();
                    String absence="Présent";
                    if(ec.isAbsence())absence="Absent";
                    donnees[0][3]=absence;
                    modeleListeMDB.insertRow(tableMDB.getRowCount(), donnees[0]);
                    tableMDB.setRowHeight(20);
                }
            }catch(Exception e){
               e.printStackTrace();
            }
        }

    }



    public ListeModele getModeleListeMDB() {
        return modeleListeMDB;
    }

    public void setModeleListeMDB(ListeModele modeleListeMDB) {
        this.modeleListeMDB = modeleListeMDB;
    }

    public JTable getTableMDB() {
        return tableMDB;
    }

    public void setTableMDB(JTable tableMDB) {
        this.tableMDB = tableMDB;
    }

    

}
